// Login JS Document
require.config({
    baseUrl: '/js/common', 
    shim: {  
        'jquery.autocomplete.min': ['jquery']
    }, 
    paths: {
        'jquery': '/js/libs/jquery',
        'jquery.autocomplete.min':'/js/libs/jquery.autocomplete.min',
        libs: '/js/libs'
    }
});
define(function(require){
	// 加载js
	var whole_height = window.innerHeight;
	var rs_zepto = require('libs/zepto');
	var rs_yingSoftCookie = require('yingSoftCookie');
	var rs_yingSoftPrg = require('yingSoftPrg');
	var rs_agentInfo = require('agentInfo');
	var rs_ajax = require('ajax');
  var rs_jquery = require('jquery');
	var rs_dialog = require('dialog');
  var rs_dialog = require('storage');
  var rs_autocomplete = require('jquery.autocomplete.min');
    // 初始化
    var selectSubject = {}; // 选择过的科目的appEName
    var G_Menujson=[];
    var G_SoftMenu = (function(){
      var _arrNodes = []; //存储菜单显示的数据
      var _arrTitle = []; //存储用户选择过的标题
      var _arrSelectedApp = [];//接收用户最近选择过的科目
      var G_MenujsonappEName =[];//所有本科的appEname
      var _count = 0;//搜索结果数
      var _softMenuData ;
      var SoftMenu = function(){
        this.init = function(){
            setWrapHeight();
            _softMenuData = _getSoftMenuData();
            getappjson(_softMenuData.Childs);
            _getappENameD(_softMenuData.Childs);
            // 我的题库
            /********************************************************************************
             函数名：getappjson
             功能：遍历科目列表json 把最后一级的科目提取出来
             ********************************************************************************/
            function getappjson(jsonvalue){  //遍历json 把最后的科目提取出来
               $.each(jsonvalue,function(n,value) {
                  if(value.Childs){
                     getappjson(value.Childs)
                  }else{
                     G_Menujson.push(value);
                  }
               });
            }
            var inputjqwidth = $('body').width();//获取搜索框的宽度
            //获取本科所有的appEname
            function _getappENameD(jsonvalue){
         		$.each(jsonvalue,function(n,value) {
                  if(value.Childs){
                     _getappENameD(value.Childs)
                  }else{ 
                     G_MenujsonappEName.push(value.AppEName);
                     
                  }
               });
//             console.log(G_MenujsonappEName)
         	}

            //初始化
            $(function() {  //搜索框模糊查询下拉列表
               $('.switchSearch .searchTit input').autocomplete(G_Menujson, {
                  max: 8, //列表里的条目数
                  minChars: 0, //自动完成激活之前填入的最小字符
                  width:inputjqwidth, //提示的宽度，溢出隐藏
                  scrollHeight: 330, //提示的高度，溢出显示滚动条
                  matchContains: true, //包含匹配，就是data参数里的数据，是否只要包含文本框里的数据就显示
                  autoFill: false, //自动填充
                  formatItem: function(row, i, max) {
                     return row.Name ;
                  },
                  formatMatch: function(row, i, max) {
                     return row.Name + row.AppPinYin;
                  },
                  formatResult: function(row) {
                     return  row.Name;
                  }
               }).result(function(event, row, formatted) { //列表点击事件
                  var appName=row.Name;
                  var appEName=row.AppEName;
                  var appID=row.AppID;
                  G_Cookie.setSelectedApp(appName, appEName, appID);
                  window.location.href = '/doExam-index?type='+whole_height;
               });
            });

            if (!_softMenuData) {
               G_Prg.throw('查询不到数据');
            }
            _loadSoftMenu();
            // 所有点击事件
            _setClickEven();
            // 获取已开通科目
            // showVipApp();
        }
        function setWrapHeight(){
          var _height = window.innerHeight - $('.switchHeader').height() - $('.switchTit').outerHeight();
          var _height2 = window.innerHeight - $('.switchHeader').height() - $('.searchTit').outerHeight();
          $('#wrapper,#wrapper3').css('height',_height);
          $('#wrapper2').css('height',_height2);
        }
        /********************************************************************************
         函数名：_setClickEven
         功能：总题库和我的题库切换
         *******************************************************************************/
        function _setClickEven(){
            $('.switchTit span a').click(function(){
                if($(this).hasClass('act')){
                  return;
                }
                $(this).addClass('act').siblings().removeClass('act');
                $('.switchUl').eq($(this).index()).show().siblings('.switchUl').hide();
                if($('.switchTit span a.rt').hasClass('act')){
                  $('.switchHeader h2').html('科目选择');
                  _myQuestions();
                }
            });
            $('.switchHeader strong').click(function(){
              $(this).hide();
              $('.switchCont,#backDiv').hide();
              $('.switchSearch').show();
              $('.searchUl ul').html('');
              $('.switchHeader h2').html('查找科目');
              $('.searchTit label input').val('');
            });
            $('.backBtn').click(function () {
               _backClick();
            });
            $('.searchTit label a').click(function () {
               _softMenuSearchClick();
            });
            $('#backDiv').click(function(){
              $('.switchCont,.switchHeader strong').show();
              $('.switchSearch').hide();
              $('.switchHeader h2').html('科目选择');
            });
            $('.MySwt dl dt').unbind('click').click(function(){
              window.location.href = '/doExam-index';
            });
        }

        /********************************************************************************
        函数名：loadSoftMenu
        功能：初始化页面
        ********************************************************************************/
        function _loadSoftMenu() {
            if (!_softMenuData.Childs) {
               G_Prg.throw('数据解析失败');
            }
            //获取根节点Childs数据
            var curMenu = _softMenuData.Childs;
            _arrTitle.push('科目选择');
            _arrNodes.push(curMenu);
            //生成目录
            _creatSoftMenuHTML(curMenu);
            $('#backDiv').css({'display':'none'});
        }

         /********************************************************************************
          函数名：getSoftMenuData
          功能：获取软件目录json数据
          ********************************************************************************/
         function _getSoftMenuData() {
            var softMenuJson = null;
            var agentCode = G_AgentInfo.getAgentCode();
            if (G_Cookie.getClientType() === 'iphone') {
               agentCode = 'iphone';
            }
            if (G_Storage.checkSessionStorageSupport()) {
               data = sessionStorage.getItem('data');
            }
            if (data) {
			  softMenuJson = JSON.parse(data).Childs[0].Childs[4];
			  console.log(JSON.parse(data).Childs[0].Childs)
              return softMenuJson;
            }
            var _success = function (json) {
               var jsonData = JSON.parse(json);
               //服务器返回的数据json的格式为：{ data:{"GenDate": "2014-06-18", "Childs": [{"Childs": [...], "AppEName": AppEName, "Name": Name}]},msg:msg,status:200}
               if (jsonData.status === 200) {
                  //接收数据
                  var data = jsonData.data;
                  //存入sessionStorage
//                softMenuJson = {
//                  'AppEName':"",
//                  'Childs':[],
//                  'Name':"医学高级职称"
//                }
                  softMenuJson = JSON.parse(data).Childs[0].Childs[4];
                  sessionStorage.setItem('data', data);
                  //公共变量接收软件目录json数据
               } else if (jsonData.status === 300) {
                  G_Prg.throw('程序运行错误，softMenu.loadSoftMenu,数据库获取数据异常');
               } else if (jsonData.status >= 400 && jsonData.status < 500) {
               } else {
                  G_Prg.throw('抱歉，不能处理，softMenu.loadSoftMenu:json="' + json + '"！');
               }
            }
            G_AjaxApi_Record.get('/api/softMenu/getSoftMenu/' + agentCode, false, _success);
            return softMenuJson;
         }

         /********************************************************************************
          函数名：creatSoftMenuHTML
          功能：  判断标签显示，动态产生页面内容
          ********************************************************************************/
         function _creatSoftMenuHTML(curMenu) {
            $('#backDiv').css({'display':'none'});
            if (!curMenu) { //判断数组是否为空
               G_Prg.throw('程序运行错误，softMenu.creatSoftMenuHTML:curMenu="' + curMenu + '",获取数据异常');
            }
            var fromUrl = G_Prg.getQueryString('fromUrl');
            $('.totalSwt ul').html('');
            _addLi(curMenu);
            // $('.loadingDiv').hide();
            myscroll.refresh();
         }

         /********************************************************************************
          函数名：addLi
          功能：动态添加li标签
          *******************************************************************************/
         function _addLi(curMenu) {
            for (var i = 0; i < curMenu.length; i++) { //遍历数据
               var item = curMenu[i]; //列表id
               //创建一个li标签
               var liTag = $("<li></li>");
               liTag.attr('id',i); //指定id
               liTag.html(item.Name);
               var curMenu = _arrNodes[_arrNodes.length - 1];
               var sonMenu = curMenu[i].Childs; //子菜单
               if (!sonMenu) { //无子节点
                  liTag.click(function () { //指定鼠标点击事件
                     _menuClick($(this).attr('id'));// 父节点li的ID
                  });
               }else{
                  liTag.click(function () { //指定鼠标点击事件
                     _menuClick($(this).attr('id'));
                  });
               }
               // $('.loadingDiv').css({'display':'none'});
               $('.totalSwt ul').append(liTag);
               $('.loadingDiv').hide();
            }
         }

         /********************************************************************************
          函数名：menuClick
          功能：点击当前节点，触发事件
          ********************************************************************************/
         function _menuClick(menuArrIndex) {
            var curMenu = _arrNodes[_arrNodes.length - 1];
            var sonMenu = curMenu[menuArrIndex].Childs; //子菜单
            var menuAppEName = curMenu[menuArrIndex].AppEName;
            var menuName = curMenu[menuArrIndex].Name;
            var appID = curMenu[menuArrIndex].AppID;
            //点击节点，判断是否有子节点
            if (!sonMenu) { //无子节点
              G_Cookie.setSelectedApp(menuName, menuAppEName, appID); //更新用户最近已选择科目
              window.location.href = '/doExam-index';
            } else {
               //有子节点，加载子节点
               _arrTitle.push(menuName);
               _arrNodes.push(sonMenu);
               _creatSoftMenuHTML(sonMenu); //生成菜单html
               $('.switchHeader h2').html(menuName); //头部显示所选目录的父节点名称
            }
         }

         function _backClick() {
            if($('.switchSearch').css('display') === 'block'){
              $('.switchCont,.switchHeader strong').show();
              $('.switchSearch').hide();
              $('.switchHeader h2').html(_arrTitle[_arrTitle.length - 1]);
              return;
            }
            //是否第一级目录
            if (_arrNodes.length === 1) {
                var appID = G_Cookie.getAppID();
                if(!appID){
                    G_Prg.alert('请选择科目！');
                    return;
                }
                var fromUrl = G_Prg.getQueryString('fromUrl');
                if (fromUrl) {
                    window.location.href = fromUrl + '?fromUrl=switchMenu';
                }
                window.location.href = '/doExam-index?fromUrl=switchMenu?type='+whole_height;
                return;
            }
            if($('.totalSwt').css('display') === 'none'){
              window.location.href = '/doExam-index?fromUrl=switchMenu?type='+whole_height;
            }else{
              //在数组的尾部删除元素
              _arrNodes.pop();
              _arrTitle.pop();
              //获取上一级菜单目录数据
              var curMenu = _arrNodes[_arrNodes.length - 1];
              //重新生成菜单html
              _creatSoftMenuHTML(curMenu);
              //头部显示所选目录的父节点name
              $('.switchHeader h2').html(_arrTitle[_arrTitle.length - 1]); 
            }
            // window.location.href = '/doExam-index?fromUrl=switchMenu?type='+whole_height;
            // return;
         }


         function _creatSearchSoftMenuHTML(curMenu, keyWord) {
            if (!curMenu) {
               return;
            }
            _count = 0;
            getAppInfo(curMenu, keyWord);
            if (_count === 0) {
               $('.searchUl ul').html('没有您要的内容！');
               $('.searchUl ul').css({'text-align':'center','padding':'40px 0','font-size':'20px','color':'#737373'});
               $('#backDiv').show();
            }
         }

         /*递归搜索*/
         function getAppInfo(appJson, keyWord) {
            for (var i = 0; i < appJson.length; i++) {
               var childs = appJson[i].Childs;
               var curAppEName = appJson[i].AppEName;
               if (childs) {
                  getAppInfo(childs, keyWord);
               }
               if (!childs) {
                  var appName = appJson[i].Name;
                  var appEName = appJson[i].AppEName;
                  var appID = appJson[i].AppID;
                  if (appName.indexOf(keyWord) !== -1) {
                     _searchAddLi(appEName, appName, appID);
                     _count++;
                  }
               }
            }
         }

         /********************************************************************************
          函数名：searchAddLi
          功能：将查询结果产生li标签
          ********************************************************************************/
         function _searchAddLi(MenuAppEName, menuNames, menuAppID) {
            var liTag = $("<li></li>"); //创建一个li标签
            liTag.html(menuNames);
            liTag.click(function () { //指定鼠标点击事件
               _searchMenuClick(MenuAppEName, menuNames, menuAppID);
            });
            //把标签发到指定容器
            $('.searchUl ul').append(liTag);
            $('.searchUl ul').css({'text-align':'left','padding':'0'});
            myscroll2.refresh();
            $('#backDiv').hide();
         }

         /********************************************************************************
          函数名：searchMenuClick
          功能：点击当前节点，触发事件
          ********************************************************************************/
         function _searchMenuClick(menuAppEName, menuNames, menuAppID) {
            G_Cookie.setSelectedApp(menuNames, menuAppEName, menuAppID);
            window.location.href = '/doExam-index?type='+whole_height;
            //跳转至首页
         }

         /********************************************************************************
          函数名：softMenuSearchClick
          功能：点击搜索触发的事件
          ********************************************************************************/
         function _softMenuSearchClick() {
            var inputValue = $('.searchTit label input').val();
            inputValue = $.trim(inputValue);
            if (inputValue.length < 1) {
               G_Prg.alert('请输入您想要的内容！');
               return;
            }
            // if (_arrNodes[_arrNodes.length - 1] !== '搜索') {
            //    _arrNodes.push('搜索'); // G_arrNodes和 G_arrTitle后面添加一条记录标识为搜索页
            //    _arrTitle.push(inputValue);
            // }
            //G_Prg.$('back').className = 'topleft';
            $('.switchHeader h2').html(inputValue);
            $('.searchUl ul').html('');
            _creatSearchSoftMenuHTML(_softMenuData.Childs, inputValue);
         }
         /********************************************************************************
          函数名：_myQuestions
          功能：获取我的题库
          ********************************************************************************/
         function _myQuestions(){
            var userID = G_Cookie.getUserID();
            if (!userID) {
                G_Prg.confirm('请先登录再使用该功能！', function () {
                    location.href = '/login';
                }, function(){
                    location.reload();
                });
                return;
            }
            var userName = G_Cookie.getUserName();
            if (!userName) {
                G_Prg.confirm('请先登录再使用该功能！', function () {
                    location.href = '/login';
                }, function(){
                    location.reload();
                });
                return;
            }
            var appID = G_Cookie.getAppID();
            var appEName = G_Cookie.getAppEName();
            // G_AjaxApi.get('/api/user/getVipMsg/' + userID + '/' + appEName + '/' + G_Cookie.getGuid(), true, function(json){
            //     var jsonData =JSON.parse(json);
            //     if(jsonData.status === 200){
            //       var appname = G_Cookie.getAppName();
            //       if(appname.indexOf('2016版医学高级职称考试宝典') === 0){
            //           appname = '医学高级' + appname.substring(15);
            //       }
            //       console.log(G_Cookie.getAppID());
            //       var html = '<span>'+ appname +'</span><em>当前</em><p>有效期至' + G_Cookie.getAppName() + '</p>';
            //       $('.MySwt dl dt').html(html);
            //     }else if (jsonData.status === 201) {
            //       $('.MySwt dl dt').hide();
            //     }
            // });
            $('.loadingDiv').show();
            G_AjaxApi_Record.get('/api/user/getVipApp/' + userID + '/' + G_Cookie.getGuid(), true, function(json){
                var jsonData =JSON.parse(json);
                if(jsonData.status === 200){
                  $('.loadingDiv').hide();
                  showVipApp(jsonData.data.userAppJson.VipApp);
                }else if (jsonData.status === 201) {
                  $('.loadingDiv').hide();
                  $('.MySwt dl').html('<dd><div class="noKemu"><span>您暂未开通任何科目</span></div></dd>');
                }
            });
            //显示用户vip信息
            function showVipApp(data){
              var vipData = data;
              if(!vipData){
                return;
              }
              // vipData = vipData.unique3();
              $('.MySwt dl dt,.MySwt dl dd').html('');
              
              // $('.MySwt dl dd').html('<div style="margin-top: 10px;color: #59a7f4;">已开通科目：</div>');
              for (var i = 0; i < vipData.length; i++) {
                var item = vipData[i];
                // if(item.AppEName.indexOf('GJZC_') === -1||item.AppEName.indexOf('TX',item.AppEName.length-2) === 0){
                //   return;
                // }else{
                	var m = item.AppEName;
                if($.inArray(item.AppEName,G_MenujsonappEName)>-1){
                    item.AppName = $.trim(item.AppName);
                    if(item.AppName.indexOf('］')){
                    	var _title = item.AppName;
				    	var p = /\［.*?\］/g;
				    	item.AppName = _title.replace(p,'');
                    }
                    if(item.AppName.substring(0,5) === '2017版' || item.AppName.substring(0,5) === '2017年'){
                    	item.AppName = item.AppName.substring(5,item.AppName.length);
                    }

                    //此时此刻的时间
                    var nnn = new Date();
                    var now = G_Prg.datetimeFormat(new Date(), 'yyyy-MM-dd');
                    var endTime = item.EndTime;
                    //过期的时间  XXXX-XX-XX   XX:XX:XX
                    var formatEndTime = G_Prg.datetimeFormat(new Date(endTime), 'yyyy-MM-dd');
                    var cookie_appid = G_Cookie.getAppID();
                    if(cookie_appid == item.AppID){
                      var html = '<span>'+ item.AppName +'</span><em>当前</em><p>有效期至' + formatEndTime + '</p>';
                      $('.MySwt dl dt').html(html);
                      continue;
                    }
                    var tapDiv = $('<div></div>');
                    tapDiv.attr('appName',item.AppName);
                    tapDiv.attr('appEName',item.AppEName);
                    tapDiv.attr('appID',item.AppID);
                    if(nnn>new Date(endTime)){
                      tapDiv.attr('class','isOverdue');
                      var html = '<span>' + item.AppName + '</span><p>有效期至'+ formatEndTime +'</p><a href="javascript:;">续费</a>';
                    }else{
                      var html = '<span>' + item.AppName + '</span><p>有效期至'+ formatEndTime +'</p>';
                    }
                    tapDiv.append(html);
                    $('.MySwt dl dd').append(tapDiv);
                    myscroll3.refresh();
                    tapDiv.unbind('click').click(function(){
                      G_Cookie.setSelectedApp($(this).attr('appName'), $(this).attr('appEName'), $(this).attr('appID'));
                      window.location.href = '/doExam-index';
                    });
                    // 充值点击
                    $('.isOverdue a').click(function(event){
                      G_Cookie.setSelectedApp($(this).parent().attr('appName'), $(this).parent().attr('appEName'), $(this).parent().attr('appID'));
                      window.location.href = '/recharge';
                      event.stopPropagation();
                    });
                }
              }
              if($('.MySwt dl dd').html() == '' && !($('.MySwt dl dt').html())){
                $('.MySwt dl').html('<dd><div class="noKemu"><span>您暂未开通任何科目</span></div></dd>');
              }
            }
         }
         /********************************************************************************
          函数名：unique3
          功能：数组去重
          ********************************************************************************/
         Array.prototype.unique3 = function(){
           var res = [];
           var json = {};
           for(var i = 0; i < this.length; i++){
            if(!json[this[i]]){
             res.push(this[i]);
             json[this[i]] = 1;
            }
           }
           return res;
         }
      };
      return new SoftMenu();
   })();
   G_SoftMenu.init();
});